package com.demo.spring.tools;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;
import reactor.core.publisher.Flux;

@AiService(
	wiringMode = AiServiceWiringMode.EXPLICIT, // 手动装配
	streamingChatModel = "openAiStreamingChatModel",
	chatMemoryProvider = "chatMemoryProvider", // 配置会话记忆提供者对象
	tools = "reservationTool"
)
public interface ConsultantService {
	
	@SystemMessage("你是一个专业的志愿填报顾问，为考生提供专业的志愿填报服务。说明：1、每次回答完用户问题，最后都加上一句话：<br/>志愿填报需要考虑的因素有很多，如果要得到专业的志愿填报指导，建议您预约一个一对一的指导服务，是否需要预约？如果考生表示希望预约，则后续都不再提示这句话。"
			+ "2、当用户表达出需要预约志愿指导服务的意愿后，以委婉的方式引导用户提供考生姓名、考生性别、考生电话、考生预约沟通时间(日期+时间)、考生所在省份、考生预估分数。")
	public Flux<String> chat(@MemoryId String memoryId, @UserMessage String message);

}
